//#pragma order

#include "user_global.h"
#include "modbus.h"

// modbus 寄存器变量定义
//==========================================================
// RO-BIT
//==========================================================

RO_BIT ro_bit =
{
    0,
};



//==========================================================
// RW-BIT
//==========================================================
RW_BIT rw_bit=
{
    0,            //  0000   禁止杯盘抽屉动作.   1: 禁止; 0: 允许.
    0,            //  0001   禁止左试剂抽屉动作. 1: 禁止; 0: 允许.
    0,            //  0002   禁止右试剂抽屉动作. 1: 禁止; 0: 允许.
    0,            //  0003   禁止上盖动作.       1: 禁止; 0: 允许.
    0,            //  0004   杯盘抽屉电磁阀锁定控制. 1: 取消锁定； 0：锁定
    0,            //  0005   左试剂抽屉电磁阀锁定控制. 1: 取消锁定； 0：锁定
    0,            //  0006   右试剂电磁阀锁定控制. 1: 取消锁定； 0：锁定
    0,            //  0007   上盖电磁阀锁定控制. 1: 取消锁定； 0：锁定
};

//==========================================================
// RO-WORD
//==========================================================

RO_LONG_ADD ro_long_addL[8] = {
    S1_POS_L,
    S2_POS_L,
    S3_POS_L,
    S4_POS_L,
    S1_DISTANCE_L,
    S2_DISTANCE_L,
    S3_DISTANCE_L,
    S4_DISTANCE_L,
};

RO_LONG_ADD ro_long_addH[8] = {
    S1_POS_H,
    S2_POS_H,
    S3_POS_H,
    S4_POS_H,
    S1_DISTANCE_H,
    S2_DISTANCE_H,
    S3_DISTANCE_H,
    S4_DISTANCE_H,
};

#if RO_CHAR_COUNT
RO_CHAR rochar[RO_CHAR_COUNT] = {
    {0x03,0x3A},
    {0x5C,0x6F}
};
#endif

RO_WORD ro_word =
{
   0
};


//==========================================================
// RW-WORD
//==========================================================

RW_LONG_ADD rw_long_addL[4] = {

    S1_MAX_DISTANCE_L,
    S2_MAX_DISTANCE_L,
    S3_MAX_DISTANCE_L,
    S4_MAX_DISTANCE_L,
};

RW_LONG_ADD rw_long_addH[4] = {
    S1_MAX_DISTANCE_H,
    S2_MAX_DISTANCE_H,
    S3_MAX_DISTANCE_H,
    S4_MAX_DISTANCE_H,
};

RW_WORD rw_word =
{
    0,                                   // 0000    当前执行指令
    {0},                                 // 0001/16 ACTION参数
    2500,                                // 0011   S1 最高速度 0.01 rad/sec
    5200,                                // 0012/2 S1 最大行程, 步.
    2500,                                // 0014   S2 最高速度 0.01 rad/sec
    4800,                                // 0015/2 S2 最大行程, 步.
    2500,                                // 0017   S3 最高速度 0.01 rad/sec
    4590,                                // 0018/2 S3 最大行程, 步.
    628,                                 // 001A   S4 最高速度 0.01 rad/sec
    5500,                                // 001B/2 S4 最大行程, 步.
//    1000,
//    1000,
//    1000,
//    1000,
//    2000,
//    2000,
//    2000,
//    2000,
};

//==========================================================
// DIAGNOSTIC
//==========================================================
ushort  diagnostic                      = 0;        // 诊断寄存器
ushort  bus_message_count               = 0;        // 总线上消息数量
ushort  bus_error_count                 = 0;        // 总线上通讯错误数量
ushort  bus_exception_count             = 0;        // 总线上异常应答数量
ushort  server_message_count            = 0;        // 下位机消息数量
ushort  server_no_response_count        = 0;        // 下位机未响应消息数量
ushort  server_exception_count          = 0;        // 下位机异常应答消息数量
ushort  server_busy_count               = 0;        // 下位机状态忙数量
ushort  bus_char_overrun_count          = 0;        // 总线字符过载（Overrun）数量

ushort  server_status                   = 0;        // 下位机状态

uchar  program_status            = 0;
bit ps_listen_only        = 0;    // 只听模式
bit ps_server_busy        = 0;    // 设备忙

uchar event_count;
uchar event_log[MAX_EVENT_COUNT];


